package com.cavasmonitor.util;

import java.util.Calendar;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import com.cavasmonitor.db.CavasDao;
import com.cavasmonitor.to.EquipoTo;
import com.cavasmonitor.to.TemperaturaTo;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import android.os.Message;

@SuppressLint("HandlerLeak")
public class TemperaturesUpdater {

	public static Timer clockTimer;

	private class Task extends TimerTask {

		private Context ctx;

		public Task(Context ctx) {
			this.ctx = ctx;
		}

		public void run() {
			
			CavasDao dao = new CavasDao(ctx);
			dao.open();

			List<EquipoTo> equipos = dao.getEquipos();

			if (equipos != null && !equipos.isEmpty()) {
				List<String> puntos = Utils.getPuntos(ctx);
				TemperaturaTo temperatura;
				Calendar calendar;

				if (puntos != null && !puntos.isEmpty()) {
					dao.updateTemperaturas();
					for (EquipoTo equipo : equipos) {

						temperatura = new TemperaturaTo();
						calendar = Calendar.getInstance();

						temperatura.setEquipo(equipo);
						temperatura.setValue(Double.valueOf(puntos
								.get((int) (equipo.getPunto() - 1))));
						temperatura.setCalendar(calendar);
						temperatura.setUltima(true);

						dao.createTemperatura(temperatura);
					}
				}
			}
			dao.close();
		}
	}

	private final Handler timerHandler = new Handler() {
		public void handleMessage(Message msg) {
			// runs in context of the main thread
			timerSignal();
		}
	};

	public TemperaturesUpdater(Context ctx) {
		if (clockTimer == null) {

			CavasDao dao = new CavasDao(ctx);
			dao.open();
			
			clockTimer = new Timer();
			clockTimer.schedule(new Task(ctx), 1000, 3600 * 1000 * (Long.parseLong(dao.getValueConfig("CICLO"))));
			
			dao.close();
		}
	}

	private void timerSignal() {
		System.out.println(clockTimer.toString());
	}

	public void killTimer() {
		clockTimer.cancel();
	}

}
